#!/bin/bash
System(){
# 禁用 SELinux
sed -ri 's/^(SELINUX=)enforcing/\1disabled/'  /etc/selinux/config
# 停止并禁用 firewalld 服务
systemctl stop firewalld.service
systemctl disable firewalld.service
# 修改 SSH 配置，禁用 GSSAPI 认证和 DNS 解析
sed -ri 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -ri 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
# 设置 core dump 文件名格式
echo '%e.core.%p' > /proc/sys/kernel/core_pattern
# 停止并禁用不必要的服务
#邮件传输代理服务，用于发送和接收电子邮件。
systemctl stop postfix.service
systemctl disable postfix.service
#ABRT（Automatic Bug Reporting Tool）服务，用于自动报告系统崩溃和错误
systemctl stop abrtd.service
systemctl disable abrtd.service
#网络管理服务，用于动态管理网络连接。
systemctl stop NetworkManager
systemctl disable NetworkManager
#ACPI（Advanced Configuration and Power Interface）守护进程，用于处理电源管理事件
systemctl disable acpid
#IPv6 防火墙服务，用于管理 IPv6 网络流量
systemctl disable ip6tables
#Machine Check Exception 日志守护进程，用于记录硬件错误
systemctl disable mcelogd
#RAID 监控服务，用于监控软件 RAID 阵列的状态。
systemctl disable mdmonitor
#网络文件系统挂载服务，用于挂载网络文件系统（如 NFS、CIFS）。
systemctl disable netfs
#NFS 文件锁定服务，用于管理 NFS 文件锁定。
systemctl disable nfslock
#OpenCT 智能卡守护进程，用于智能卡读卡器的支持。
systemctl disable openct
systemctl disable postfix 
#RPC 绑定服务，用于将 RPC 程序号映射到网络地址。
systemctl disable rpcbind
#PC GSS-API 认证守护进程，用于 NFS 的 GSS-API 认证。
systemctl disable rpcgssd
#RPC ID 映射守护进程，用于 NFS 的用户和组 ID 映射。
systemctl disable rpcidmapd
#审计守护进程，用于记录系统审计日志
systemctl disable auditd
#HAL（Hardware Abstraction Layer）守护进程，用于硬件抽象层的支持。
systemctl disable haldaemon
#LLDP（Link Layer Discovery Protocol）守护进程，用于网络设备的发现。
systemctl disable lldpad
#at 任务调度守护进程，用于计划任务的执行。
systemctl disable atd
#kdump 内核崩溃转储服务，用于在系统崩溃时生成内核转储文件。
systemctl disable kdump
# 安装必要的软件包
yum -y install langpacks-en glibc-all-langpacks lrzsz dos2unix ld-linux.so.2 OpenIPMI ipmitool chrony gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel nss_ldap openldap openldap-devel  openldap-clients openldap-servers libxslt-devel libevent-devel ntp  libtool-ltdl bison libtool vim-enhanced psmisc libbz2.so.1 libcrypto.so.6 libssl.so.6  libz.so.1 
echo '%e.core.%p' > /proc/sys/kernel/core_pattern

# 设置内核参数
cat >> /etc/sysctl.conf <<EOF
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 32768
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_mem = 16777216 16777216 16777216
net.ipv4.tcp_timestamps = 0

vm.swappiness = 10
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5

fs.file-max = 65535
EOF
# 应用内核参数
sysctl  -p
# 设置用户限制
cat >> /etc/security/limits.conf <<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF
# 设置系统启动时的 ulimit
echo "ulimit -SH 65535" >> /etc/rc.local
# 设置 DNS 服务器
echo "nameserver 114.114.114.114" >> /etc/resolv.conf 
# 设置全局 ulimit 和历史记录格式
echo "ulimit -n 65535 "  >> /etc/profile
echo "export HISTTIMEFORMAT='%F %T '"  >> /etc/profile
echo "export HISTSIZE=\"100000\" "  >> /etc/profile
echo "ulimit -c unlimited"  >> /etc/profile
# 重新加载 /etc/profile
source /etc/profile 
# 设置命令提示符格式
echo 'PS1="\[\e[1;35m\][\u@\h \W]\\$ \[\e[0m\]"' >/etc/profile.d/env.sh 
# 重启系统
reboot
}
# 调用 System 函数
System
